<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 对象的特性:
    // 1. 以键值对的形式存在, 键名(字符串) 键值(任意类型的数据)
    // 2. 对应键名取值和赋值,取值不分先后  (点语法 中括号语法)
    //    对象.属性名     
    //    对象["属性名"]  

    // 对象取值时 取一个不存在的属性  => undefined
    // 对象赋值时 对一个不存在的属性赋值  => 新增该属性到对象中

    // 3. 可以使用for...in遍历对象 (for...of 是ES6新增专门遍历数组,字符串等可遍历结构,不能直接遍历对象)

    // 注意:
    // 数组可以一个特殊的对象 键名是数字(下标)

    var zhang = new Object({
        name: "张三",
        age: 18,
        isStudy: true,
        money: null,
        a: undefined,
        hobby: ["sing", "dance", "rap"],
        grade: {
            "chinese": 55,
            "math": 66,
            "english": 77,
        },
        say: function () {
            console.log("hello");
        }
    });
    console.log(zhang);


    // 取值
    // console.log(zhang.name, zhang["name"]);
    // console.log(zhang.age, zhang["age"]);
    // console.log(zhang.isStudy, zhang["isStudy"]);
    // console.log(zhang.money, zhang["money"]);
    // console.log(zhang.a, zhang["a"]);
    // console.log(zhang.hobby, zhang["hobby"]);
    // console.log(zhang.grade, zhang["grade"]);
    // console.log(zhang.grade.chinese);
    // console.log(zhang.say, zhang["say"]);

    // zhang.say  //取值
    // zhang.say();  //先取值 再调用

    // 对象取值时 取一个不存在的属性  => undefined
    // console.log(zhang.height);

    // 赋值
    // zhang.name = "李四";
    // zhang["age"] = 81;
    // zhang.isStudy = false;
    // zhang.hobby.push("basketball");
    // zhang.grade.chinese = 99;

    // 对象赋值时 对一个不存在的属性赋值  => 新增该属性到对象中
    // zhang.height = "180cm";

    // console.log(zhang);



    // for...in 遍历对象,返回对象的键名(属性名)
    // for (var key in zhang) {
    //     // key => "name" "age" "hobby"
    //     // zhang[key] => zhang["name"]
    //     console.log(key, zhang[key]);
    // }

    // 报错 -> for...of 是ES6新增专门遍历数组,字符串等可遍历结构,不能直接遍历对象
    // for (var val of zhang) {
    //     console.log(val);
    // }




</script>

</html>